Como gestionar solicitudes de dominio cruzados (CORS), ya sea desde el navegador o desde el servidor.
La cabecera que indica si se permiten solicitudes CORS en las cabeceras HTTP es la siguiente:
Access-Control-Allow-Origin
Para permitir acceso desde cualquier sitio usaríamos:
Access-Control-Allow-Origin: *
En esta web podemos ver como gestionar solicitudes CORS en varios servidores y con varios lenguajes: https://enable-cors.org
Para gestionar las solicitudes CORS en servidores implementados con App Engine lo hacemos con la siguiente linea de código, dentro de la función doGet:
response.addHeader("Access-Control-Allow-Origin", "*");
Siendo response un objeto tipo HttpServletResponse
En vez del asterisco (aceptar cualquiera solicitud) podemos indicar el dominio del que queramos aceptar solicitudes.
Para deshabilitar la politica CORS tenemos que ejecutar el google chrome desde la consola con el siguiente comando
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:\ChromeNewConfig"
NOTA: En windows indicamos toda la ruta del ejecutable si fuese en linux podemos utilizar el comando google-chrome
Desde la consola de desarrollador podemos ver mensajes como este cuando se produce una violacion de la politica CORS:
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
Chrome | CORS